このページは私用WordPressの覚え書き兼、テストページです。
「SNSボタン」は、テスト検証用に仮設置しているだけなので、押しても反応しません。

027 画像がアップロードできない?(LEOサーバー)


※この記事は、過去に書いたものの再アップです。備忘録。


画像がアップロードできない!(LEOサーバー)

最初にローカルサーバー環境で自作テーマを作り、その後、本番のサーバーで運用しようとした時に遭遇したトラブルです。

何故か「画像をアップロード」のボタンを押しても、画像が投稿できません・・・。onz

その時に契約していたのが今と同じ「LEOサーバー」で、
「LEOサーバー」に限った症状なのか、他のサーバーでもよくある事なのか不明なのですが、ここでかなり悩みました。


wp-content/uploads に接続できませんでした。エラー

などと言われてしまいます。


解決法「その1」 FFFTP で保存先のフォルダを作る

WordPressでファイルがアップロードできない場合の対策

上記サイトさんでも書かれていますが、WordPress は、投稿した画像は、
wordpress/wp-content/uploads というフォルダに保存されます。
(投稿した記事のテキストは DB に保存されますが、画像はちがう)

んで、通常はこのフォルダが自動生成され、自動的にアップロードした画像のフォルダが年ごと、月ごとに作成されます(デフォルトの設定だと思う)

で、この自動生成が、サーバによってはされない場合があるよ、ってことのようです。
なので、自分で空のフォルダを作り、FFFTP で空フォルダ「uploads」をアップしておくといいよ、ってこと。

でも、私の場合は、すでに「ローカルサーバ」で作った記事をいくつかアップ済みで、
xxxxxx/wp-content/uploads の中には、もう画像フォルダがあり、画像ファイルもアップされている状態です。

実際 FFFTP で中をのぞいてみると、
wp-content/uploads/2012/09/xxxxx.jpg というように、ちゃんと画像が保存されています。
http://www.xxxxxxx.com/wp-content/uploads/2012/09/xxxxx.jpg
とブラウザにURLを打ち込んでみても、ちゃんと表示されます。


なのに、なのに、
新規でアップロードしようとすると、拒否されるんですよ!
どうも、そのフォルダを認識しない、っつーか、たどりつけない、となるみたい。


パーミッションを確認してみよう

で、参考サイトさんの次に続く文章、
「wp-contentディレクトリ」のパーミッションがデフォルトで755となっているため権限不足でディレクトリが作成できないだけ、
wp-content/uploads のパーミッションを「757」に変更してあげよう

 ↓
ダメでした。なんも変わらず、同じえらー(泣)


.htaccessファイルに追記してみる

ならば、.htaccessファイル を置いたらどうだ、ってことでやってみました。
 ↓
ダメでした。違うエラーがでました。(泣) あわてて.htaccess を撤去。(汗)


解決法「その2」-「管理画面」の「メディア」を空更新してみる

●WordPressで画像がアップロードできない不具合を修復

これは、「管理画面」→「設定」→「メディア」で、アップロードするフォルダの設定を確認してみて、ってことです。


初期設定のまま何もいじっていないので、アップロードするフォルダ先は空白(=デフォルトのwp-content/uploads になってるってこと)でしたが、念のために wp-content/uploads と、打ちこんで「更新」してみました。
 ↓
ダメでした。なんも変わらず、同じ。


やっと解決しました

さんざん2~3日悩んだ結果ですね、試しに、なんとなく実行してみたものなのですが、

xxxxx/wp-content/uploads のパーミッションは「757」に変更したものの、そういえば、その中身のパーミッションまでは、変更していなかったな・・・ と、ふと思い、

 ↓

その中のフォルダ、「2010」「2011」「2012」とかの年フォルダ、その中に作られた「01」~「09」とかの月フォルダも全部、「757」に変更してみました。


そしたら  ↓ なんと、アップロードできるようになりました!!!


いままで無反応だったアイキャッチ画像も、設定できるようになりました!!!


よ、よかった・・・・


これでやっと「イラスト目次」のページも表示されるようになりました。


もし、画像がアップロードできない謎のエラーに遭遇された方は、xxxxx/wp-content/uploads の中のフォルダ全部のパーミッションも確認してみてください。

ご参考までに。


026 検索エンジン用のファイル(robots.txt)


(※WordPress覚書メモ この記事は、過去に書いた記事の再アップです)


無くても問題ないのですが、
余分なファイルまで検索しないように制御する、検索エンジン用のファイルがあるそうです。


検索エンジン用のファイルを作成してみる(サンプル1)

User-Agent: *
Disallow: /wp-login.php
Disallow: /wp-admin/
Disallow: /wp-includes/
Disallow: /wp-content/
Allow: /
Sitemap: http://example.com/sitemap.xml

↑このように記述して「robots」という名前で、テキスト形式で保存します。

拡張子は .txt
この robots.txtファイルは、サイトのトップに置かなければいけません。

○ http://www.xxxxxx.com/robots.txt
× http://www.xxxxxx.com/~hanako/robots.txt


上記 robots.txtファイル に記述した内容は、
全検索エンジンのインデックスを許可、ログインページと本体、テーマファイル等はインデックスさせない、というものです。


(サンプル2)すべてのファイルの登録を禁止

User-agent: *
Disallow: /

 ↑ 上記は、すべて(*)のロボットに対して、/ ではじまるファイル(つまりはすべてのファイル)を検索データベースに登録することを禁止する という記述です。


(サンプル3)goo と Google に対してのみ特定のフォルダを禁止

例えば、goo と Google に対してのみ、/himitsu と /cgi-bin の下のファイルを検索させないようにするには、次のようにします。

User-agent: moget
Disallow: /himitsu/
Disallow: /cgi-bin/

User-agent: Googlebot
Disallow: /himitsu/
Disallow: /cgi-bin/


(サンプル4)ディレクトリ名の後にスラッシュを入力すると、junkのディレクトリとその中身をすべてブロック

 ↓ /junk/のように、ディレクトリ名の後にスラッシュを入力すると、
   junkのディレクトリとその中身をすべてブロックするという意味になります。
特定のページをブロックするにはファイル名を書きます。末尾にスラッシュはいりません。

User-agent: *
Disallow: /junk/	// 該当のディレクトリとその中身をすべてブロック
Disallow: /private_file.html		// 該当のhtmlファイルのみをブロック


(サンプル5)特定の画像をブロック

Google 画像検索から特定の画像を削除するには、次のようにします。

User-agent: Googlebot-Image
Disallow: /images/xxxx.jpg


(サンプル6)すべての画像をブロック

Google 画像検索からサイトのすべての画像を削除するには、次のようにします。

User-agent: Googlebot-Image
Disallow: /


参考サイト → robots.txtの書き方と効果的な活用法


025「サイト内検索」で「タグ」が検索できない?


(※WordPress覚書メモ この記事は、過去に書いた記事の再アップです)


「タグ」が検索できない

前回の記事で、「もういっこ、問題が発生・・・」と書いたけど

どうもこのwordpressの「サイト内検索」は、本文中に記入された語句しか検索しないっぽいです・・・onz


たとえばタグにいくら「柴犬」って入れてあっても、本文中にこの単語を使ってない場合(例えば画像だけとか)は、いくら「柴犬」で検索かけてもその記事はヒットしないんです。

まあ、タグは「タグクラウド」でクリックしろってことなのか・・・?

でも「タグクラウド」使ってない場合だってあるじゃん・・・ ねえ?
その場合「タグに入れてあんのに検索かけてヒットしない」ってどうなのよ? と甚だ疑問に思うわけです。


プラグイン「search-everything」を使おう

ってことで、これを「サイト内検索」にヒットさせる方法を調べてみたところ

search-everything」というプラグインを使えばいいとわかりました。


プラグイン「search-everything」の使い方

使い方はカンタンです。
プラグインを有効にした後、
設定 → search-everything → 検索に含めたいものを選んで「Yes」にするだけです。


これで「タグ」も検索できるようになりました~~


024 index.php に複数ループをさせたせいか、サイト内検索がきかなくなってしまった件


(※WordPress覚書メモ この記事は、過去に書いた記事の再アップです)


何故か「サイト内検索」が効かない

会社のblogを「オリジナル」テーマに変更したところ、「サイト内検索」がきかなくなりました・・・onz。


使用している「オリジナル」テーマは、自サイト用に作ったテーマを流用しただけのものなので、基本的な部分はほぼ一緒。
必要最低限なテンプレートで済ませたかったので、search.php は、設置してませんでした。

(「検索結果」は、search.php がなかった場合、通常は index.php がテンプレートとして使われます。)

で、自サイトでは「検索」はちゃんと問題なく動作します。
会社用のblog では、なぜかきかない・・・onz。


「自サイト用」と「会社のblog」の違うところといえば、
「会社のblog」では「カスタム投稿は使っていない」「トップページは通常投稿(index.php)にしている」「index.php内で複数のループを使って、カテゴリーA の記事と、カテゴリーB の記事を分割して表示してる」という点くらいかな。


なので、自サイトで普通に機能する「サイト内検索」がきかないってことは、やっぱ 複数のループ(index.php) がマズイんじゃね? と思うわけですよ。

ってことで、改めてsearch.php を設置してみることにしました。


index.phpの代替テンプレートではなく、ちゃんと search.php を作ってみる

search.php
(↓ archive.php をコピーして名前を変更し、下記のハイライトした部分のみ、書き換えた)

<?php get_header(); ?>
<div id="content">
<div id="innerbox">

<?php $allsearch =& new WP_Query("s=$s&posts_per_page=-1");
$key = wp_specialchars($s, 1);
$count = $allsearch->post_count;
if($count!=0){
// 検索結果を表示:該当記事あり
echo '<h2>“<span class="ao">'.$key.'</span>” で検索した結果、下記の <span class="ao">'.$count.'</span> 件 の記事が見つかりました。</h2>';
}
else {
// 検索結果を表示:該当記事なし
 echo '<h2>“<span class="ao">'.$key.'</span>” で検索した結果、関連する記事は見つかりませんでした。</h2>';
}
?>
<br class="br30" />

<!-- 投稿情報 loop -->
<?php if ( have_posts() ) : while ( have_posts() ) : the_post(); ?>

<div class="post">
<h2 class="posttitle"><a href="<?php the_permalink() ?>"><?php the_title(); ?></a></h2>
<dl class="metadata">
<dd>投稿日:<?php the_time('Y年n月j日(D) AG:i'); ?></dd>
<dd>作成者:<?php the_author(); ?></dd>
</dl>
<?php the_post_thumbnail( array(100,160) ); ?><div class="ct"></div><?php the_excerpt(); ?>
<dl class="metadata">
<dt>カテゴリー:</dt>
<dd><?php the_category('、') ?></dd>
<?php if (get_the_tags()) { ?>
<dt>タグ:</dt>
<dd><?php the_tags('','、','') ?></dd>
<?php } ?>
</dl>
</div><!--div.post終了-->
<?php endwhile; else: ?>
<div class="post">
<p>申し訳ございません。<br />キーワードを変更して、検索してみてください。</p>
</div><!--div.post終了-->
<?php endif; ?>

<!-- 「PageNavi」 -->
<?php if(function_exists('wp_pagenavi'))://プラグイン「PageNavi」を有効にしている時 
?>
	<?php wp_pagenavi(); ?>
<?php else://プラグイン「PageNavi」を無効にした時 
?>
	<p class="navigation"><?php posts_nav_link(' | ','&laquo; 新しい記事へ','過去の記事へ &raquo;'); ?></p>
<?php endif; ?>
<br class="br30" />

</div><!--div#innerbox終了-->
</div><!--div#content終了-->

<!-- サイドバー -->
<?php get_sidebar(); ?>
<!-- フッター -->
<?php get_footer(); ?>

と記述したファイルを「テーマ」フォルダに加えてみましたら・・・


ちゃんと検索結果が表示されるようになりもうした!(・∀・)
よかった よかった


だがしかし・・・!! もういっこ、問題が発生・・・(次回につづく)


023 オリジナルテーマでウィジェットを使いたい


(※WordPress覚書メモ この記事は、過去に書いた記事の再アップです)


wordpressには「ウィジェット」という、サイドバーを簡単に編集できる機能があります。
でもいちから作った「自作テーマ」の場合、「ウィジェット」を使えるようになっていません。
今日は、「オリジナルテーマ」で「ウィジェット」を使う方法について書きたいと思います。


「オリジナルテーマ」で「ウィジェット」を使うには、functions.php に下記を記入する

<?php
//サイドバーのウェジェットを使えるようにする
register_sidebar(array(
‘before_widget’ => ‘<div id="%1$s" class="widget %2$s">’,
‘after_widget’ => ‘</div>’,
‘before_title’ => ‘<h3>’,
‘after_title’ => ‘</h3>’,
));
?>
279行目はコメントです。


コメントの書き方の違い

コメント」は、ファイルによって書き方が異なります。
htmlファイルなら <!-- --> で囲み、
<?php ?> の中なら、頭に // とつけるとその行のみコメント、
cssファイルなら /* */ で囲む、という具合です。


「ウィジェット」を出力する

次に、sidebar.php を開いて、「ウィジェット」を表示させたい箇所に、下記を挿入します。

<!--サイドバー(ウィジェット)-->
<?php if ( !function_exists('dynamic_sidebar') || !dynamic_sidebar() ) : ?>
<?php endif; ?>


これで「ウィジェット」が使えるようになりました。



投稿されたものがありません。